Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188192 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/tuple b/include/tuple index 94876c9..1829932 100644 --- a/include/tuple +++ b/include/tuple
@@ -135,7 +135,7 @@ // allocator_arg_t -struct _LIBCPP_TYPE_VIS allocator_arg_t { }; +struct _LIBCPP_TYPE_VIS_ONLY allocator_arg_t { }; #if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MEMORY) extern const allocator_arg_t allocator_arg; @@ -170,7 +170,7 @@ }; template <class _Tp, class _Alloc> -struct _LIBCPP_TYPE_VIS uses_allocator +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator : public __uses_allocator<_Tp, _Alloc> { }; @@ -200,7 +200,7 @@ // tuple_size template <class ..._Tp> -class _LIBCPP_TYPE_VIS tuple_size<tuple<_Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_size<tuple<_Tp...> > : public integral_constant<size_t, sizeof...(_Tp)> { }; @@ -208,7 +208,7 @@ // tuple_element template <size_t _Ip, class ..._Tp> -class _LIBCPP_TYPE_VIS tuple_element<_Ip, tuple<_Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, tuple<_Tp...> > { public: typedef typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type; @@ -536,7 +536,7 @@ }; template <class ..._Tp> -class _LIBCPP_TYPE_VIS tuple +class _LIBCPP_TYPE_VIS_ONLY tuple { typedef __tuple_impl<typename __make_tuple_indices<sizeof...(_Tp)>::type, _Tp...> base; @@ -724,7 +724,7 @@ }; template <> -class _LIBCPP_TYPE_VIS tuple<> +class _LIBCPP_TYPE_VIS_ONLY tuple<> { public: _LIBCPP_INLINE_VISIBILITY @@ -864,7 +864,7 @@ namespace { const __ignore_t<unsigned char> ignore = __ignore_t<unsigned char>(); } -template <class _Tp> class _LIBCPP_TYPE_VIS reference_wrapper; +template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY reference_wrapper; template <class _Tp> struct ___make_tuple_return @@ -1140,7 +1140,7 @@ } template <class ..._Tp, class _Alloc> -struct _LIBCPP_TYPE_VIS uses_allocator<tuple<_Tp...>, _Alloc> +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator<tuple<_Tp...>, _Alloc> : true_type {}; template <class _T1, class _T2>